#pragma once

#include <fstream>
#include <map>
#include <string>

class StockCallPutCombinations;
struct Warrant;

class CallPutCombinationsAnalysis
{
public:
    CallPutCombinationsAnalysis( const std::string& separator, const std::string& outputFilePath );
    ~CallPutCombinationsAnalysis( );

    void AddWarrant( const Warrant& warrant );
    void PrintCombinations( ); 

private:
    typedef std::map<std::string,StockCallPutCombinations*> CallPutMap;
    typedef CallPutMap::iterator MapIterator;
    typedef std::pair<std::string,StockCallPutCombinations*> MapPair;

    const std::string     m_separator;
    CallPutMap            m_callPutMap;
    std::ofstream         m_outputFile;
};

